#!/bin/bash

# 设置错误时退出
set -e

# 项目目录
PROJECT_DIR="/www/koa"

# 日志文件
LOG_FILE="$PROJECT_DIR/deploy.log"

# 记录日志函数
log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}

# 确保项目目录存在
if [ ! -d "$PROJECT_DIR" ]; then
    mkdir -p "$PROJECT_DIR"
fi

# 进入项目目录
cd "$PROJECT_DIR"
log "进入项目目录: $PROJECT_DIR"

# 如果是首次部署，克隆代码
if [ ! -d ".git" ]; then
    log "首次部署，克隆代码..."
    git clone 你的Git仓库地址 .
else
    # 拉取最新代码
    log "拉取最新代码..."
    git pull
fi

# 安装依赖
log "安装项目依赖..."
npm install

# 启动或重启服务
if pm2 list | grep -q "koa"; then
    log "重启 PM2 服务..."
    NODE_ENV=production pm2 restart koa --update-env
else
    log "首次启动 PM2 服务..."
    NODE_ENV=production pm2 start bin/www --name koa
fi

# 保存 PM2 状态
log "保存 PM2 状态..."
pm2 save

# 输出运行状态
log "部署完成，当前服务状态："
pm2 status

# 输出最新日志
log "最新日志："
pm2 logs koa --lines 20